package jianzhiOffer;

/**
 * 25. 合并两个排序的链表
 * 输入两个递增排序的链表，合并这两个链表并使新链表中的节点仍然是递增排序的。
 *
 * @author 司松坡
 * @createTime 2023年04月27日
 */
public class Jian25 {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if ( null == l1){
            return l2;
        }
        if ( null == l2){
            return l1;
        }
        ListNode listNode = new ListNode(0);
        ListNode res = new ListNode(0,listNode);
        if (l1.val > l2.val){
            listNode.next = l2;
            l2 = l2.next;
        } else {
            listNode.next = l1;
            l1 = l1.next;
        }
        listNode = listNode.next;
        while (null != l1 && null != l2){
            if (l1.val > l2.val){
                listNode.next = l2;
                l2 = l2.next;
            } else {
                listNode.next = l1;
                l1 = l1.next;
            }
            listNode = listNode.next;
        }
        if ( null == l1){
            listNode.next = l2;
        }
        if ( null == l2){
            listNode.next = l1;
        }
        return res.next.next;
    }
}
